package com.s7.network.server;

import java.util.Map;

import io.reactivex.Observable;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.HeaderMap;
import retrofit2.http.QueryMap;
import retrofit2.http.Url;

/**
 * 有参GET请求服务
 */
public interface GetQueryServer {

    /**
     * get 请求 -- 表单(参数)
     *
     * @param url
     * @param parameters
     * @return
     */
    @GET
    Observable<ResponseBody> onGet(@Url String url,
                                   @QueryMap Map<String, String> parameters);

    /**
     * get 请求 -- json(参数)
     *
     * @param url
     * @param parameters RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"), json);
     * @return
     */
    @GET
    Observable<ResponseBody> onGet(@Url String url,
                                   @Body RequestBody parameters);

    /**
     * get 请求 -- 表单(参数)
     *
     * @param url
     * @param headers    请求头
     * @param parameters
     * @return
     */
    @GET
    Observable<ResponseBody> onGet(@Url String url,
                                   @HeaderMap Map<String, String> headers,
                                   @QueryMap Map<String, String> parameters);


    /**
     * get 请求 -- json(参数)
     *
     * @param url
     * @param headers    请求头
     * @param parameters RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"), json);
     * @return
     */
    @GET
    Observable<ResponseBody> onGet(@Url String url,
                                   @HeaderMap Map<String, String> headers,
                                   @Body RequestBody parameters);
}
